/************************************************************************
*
*    File Name: scoreboard.cpp
*    Description: 编写积分榜界面    连接数据库进行数据展示（菜单界面的玩家名称通过传参获取，得分可直接通过游戏界面获取）
*    Version: V1.0
*    Author: 王涵
*    Create Time: 2024-11-27
*
*************************************************************************/
#include "scoreboard.h"
#include "ui_scoreboard.h"

ScoreBoard::ScoreBoard(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::ScoreBoard)
{
    ui->setupUi(this);
    this->setFixedSize(460,600);
    this->setWindowTitle("积分榜");
    this->setWindowIcon(QIcon(GAME_ICON));
    ui->plainTextEdit->setStyleSheet("font-size : 20px;"
                                   "border-radius:10px;");
    // 加载数据库的驱动
    db = QSqlDatabase::addDatabase("QSQLITE");

    // 设置本地数据库文件
    db.setDatabaseName("war_plane.db");
    // 打开数据库
    if(db.open())   qDebug()<<"数据库打开成功....";
    else    qDebug()<<"数据库打开失败....";
    // 向数据库发送sql语句
    query = new QSqlQuery; // 不可指定父对象
    query->exec("CREATE TABLE IF NOT EXISTS score_board (user_name STRING(32),score INT)");
    display();
}

void ScoreBoard::display(){
    query->exec(QString("SELECT * FROM score_board"));
    while(query->next()){
        QString user_name = query->value("user_name").toString();
        int score = query->value("score").toInt();
        ui->plainTextEdit->appendPlainText(QString("user_name : %1 | score : %2").arg(user_name).arg(score));
    }
}
ScoreBoard::~ScoreBoard()
{
    delete ui;
    delete  query; // 因为调用时不能指定父对象，所以需要手动释放
    // 关闭数据库
    db.close();
}
